package com.itgt.teacher;

import java.util.Arrays;

/**
 * 1、使用按位异或来交换两个变量的值是否适用于 char 、float 、double 
 * 2、使用按位异或来交换两个变量的值是否适用于 byte / short / long ?
 */
public class Panda {

	public static void main(String[] args) {
		
		Panda tuantuan = new Panda();
		
		int[] array = { 20 , 9 , 30 , 49 , -2 , 0 };
		System.out.println( Arrays.toString( array ) );
		
		tuantuan.sort( array );
		
		System.out.println( Arrays.toString( array ) );
		
		int a = 0b0000_0000_0000_0000_0000_0000_0000_0101 ; // 5
		int b = 0b0000_0000_0000_0000_0000_0000_0000_0111 ; // 7
		System.out.println( a + " , " + b );
		
		// 0b0000_0000_0000_0000_0000_0000_0000_0101
		// 0b0000_0000_0000_0000_0000_0000_0000_0111
		// 0b0000_0000_0000_0000_0000_0000_0000_0010
		a ^= b ; // a = a ^ b ;
		
		// 0b0000_0000_0000_0000_0000_0000_0000_0010
		// 0b0000_0000_0000_0000_0000_0000_0000_0111
		// 0b0000_0000_0000_0000_0000_0000_0000_0101
		b ^= a ; // b = b ^ a ;
		
		// 0b0000_0000_0000_0000_0000_0000_0000_0010
		// 0b0000_0000_0000_0000_0000_0000_0000_0101
		// 0b0000_0000_0000_0000_0000_0000_0000_0111
		a ^= b ; // a = a ^ b ;
		System.out.println( a + " , " + b );
		
	}
	
	public void sort( int[] array ) {
		
		// 控制比较轮数
		for( int i = 0 , x = array.length - 1 ; i < x ; i++ ) {
			for( int k = 0 ; k < x - i ; k++ ) {
				if( array[ k ] > array[ k + 1 ] ) {
					array[ k ] ^= array[ k + 1 ];
					array[ k + 1 ] ^= array[ k ];
					array[ k ] ^= array[ k + 1 ];
				}
				System.out.println( Arrays.toString( array ) );
			}
		}
		
	}

}
